-- cast_skill
-- created by chendh
-- 天空战附加属性：天空战属性释放技能
-- ([1:([2:1000])])代表第1回合开始的时候100%概率释放技能2

return {
    -- 空属性
    getEmptyProp = function()
        return {};
    end,

    -- 合并属性
    mergeSkyProp = function(data, addon)
        local result = {};

        if not data then
            result = table.deepcopy(addon);
        else
            result = table.deepcopy(data);

            for style, value in pairs(addon) do
                if not result[style] then
                    result[style] = {};
                end

                for type, num in pairs(value) do
                    result[style][type] = value[type] + (result[style][type] or 0);
                end
            end
        end

        return result;
    end,

    parseDesc = function(desc, data)
        -- 按顺序替换，每次替换一个
        -- 替换描述前，先按回合排序一下
        local rate;
        local keys = table.keys(data);
        table.sort(keys);
        for _, round in ipairs(keys) do
            -- 触发轮数
            desc = string.gsub(desc, "{cast_round}", round, 1);

            for _, skillId in ipairs(table.keys(data[round])) do
                -- 触发率
                rate = math.modf(data[round][skillId] / 10);
                desc = string.gsub(desc, "{cast_rate}", rate, 1);

                -- 释放指定技能，需要对该技能解析一次描述
                desc = SkyShipSkillM.parseDesc(skillId, desc);
            end
        end

        return desc;
    end,
};